home *** CD-ROM | disk | FTP | other *** search
/ PC User 2003 May / Disc 2 / PCU0503CD2.iso / Crystal / 3rdparty / JavaVM / Plug-in / jplugin.exe / jaws.jar / sun / plugin / AppletViewer.class (.txt) < prev    next >
Encoding:
Java Class File  |  1998-06-22  |  12.5 KB  |  484 lines

  1. package sun.plugin;
  2.  
  3. import java.applet.Applet;
  4. import java.applet.AppletContext;
  5. import java.awt.Color;
  6. import java.awt.Component;
  7. import java.awt.Dimension;
  8. import java.awt.Font;
  9. import java.awt.FontMetrics;
  10. import java.awt.Frame;
  11. import java.awt.Graphics;
  12. import java.awt.Window;
  13. import java.io.BufferedInputStream;
  14. import java.io.File;
  15. import java.io.FileInputStream;
  16. import java.io.IOException;
  17. import java.net.MalformedURLException;
  18. import java.net.URL;
  19. import java.rmi.server.RMISocketFactory;
  20. import java.util.Hashtable;
  21. import java.util.MissingResourceException;
  22. import java.util.Properties;
  23. import java.util.ResourceBundle;
  24. import java.util.StringTokenizer;
  25. import sun.applet.AppletClassLoader;
  26. import sun.applet.AppletPanel;
  27. import sun.net.www.MimeTable;
  28. import sun.net.www.protocol.http.HttpURLConnection;
  29. import sun.plugin.protocol.ProxyType;
  30. import sun.plugin.protocol.http.Handler;
  31.  
  32. public abstract class AppletViewer extends AppletPanel implements ProxyType {
  33.    public static final int NETWORK_ACCESS_NONE = 0;
  34.    public static final int NETWORK_ACCESS_HOST = 1;
  35.    public static final int NETWORK_ACCESS_UNRESTRICTED = 2;
  36.    private static boolean debug = true;
  37.    private static boolean initialized;
  38.    public static boolean javaEnabled = true;
  39.    public static String theVersion = "1.1";
  40.    private static String defaultSaveFile = "Applet.ser";
  41.    public static File theUserPropertiesFile;
  42.    public static File theAppletViewerPropsFile;
  43.    URL documentURL;
  44.    URL baseURL;
  45.    private static AppletMessageHandler amh = new AppletMessageHandler("appletpanel");
  46.    protected Hashtable atts = new Hashtable();
  47.    // $FF: renamed from: rb java.util.ResourceBundle
  48.    private static ResourceBundle field_0;
  49.    private String cookedJars;
  50.    private ActivatorAppletContext appletContext;
  51.  
  52.    public static void loadPropertiesFiles() {
  53.       String var0 = File.separator;
  54.       theUserPropertiesFile = new File(System.getProperty("user.home") + var0 + ".java" + var0 + "properties");
  55.       (new File(theUserPropertiesFile.getParent())).mkdirs();
  56.       theAppletViewerPropsFile = new File(System.getProperty("java.home") + var0 + "lib" + var0 + "appletviewer.properties");
  57.    }
  58.  
  59.    public static void initEnvironment(int var0, String var1, String var2) {
  60.       if (!initialized) {
  61.          initialized = true;
  62.          field_0 = ResourceBundle.getBundle("sun.plugin.resources.Activator");
  63.          Properties var3 = new Properties(System.getProperties());
  64.          ((Hashtable)var3).put("acl.read", "+");
  65.          ((Hashtable)var3).put("acl.read.default", "");
  66.          ((Hashtable)var3).put("acl.write", "+");
  67.          ((Hashtable)var3).put("acl.write.default", "");
  68.          ((Hashtable)var3).put("browser", "sun.plugin");
  69.          ((Hashtable)var3).put("browser.version", theVersion);
  70.          ((Hashtable)var3).put("browser.vendor", "Sun Microsystems Inc.");
  71.          ((Hashtable)var3).put("http.agent", "Activator/" + theVersion);
  72.          ((Hashtable)var3).put("package.restrict.access.sun", "true");
  73.          ((Hashtable)var3).put("package.restrict.access.netscape", "false");
  74.          ((Hashtable)var3).put("package.restrict.definition.java", "true");
  75.          ((Hashtable)var3).put("package.restrict.definition.sun", "true");
  76.          ((Hashtable)var3).put("package.restrict.definition.netscape", "true");
  77.          ((Hashtable)var3).put("java.version.applet", "true");
  78.          ((Hashtable)var3).put("java.vendor.applet", "true");
  79.          ((Hashtable)var3).put("java.vendor.url.applet", "true");
  80.          ((Hashtable)var3).put("java.class.version.applet", "true");
  81.          ((Hashtable)var3).put("os.name.applet", "true");
  82.          ((Hashtable)var3).put("os.version.applet", "true");
  83.          ((Hashtable)var3).put("os.arch.applet", "true");
  84.          ((Hashtable)var3).put("file.separator.applet", "true");
  85.          ((Hashtable)var3).put("path.separator.applet", "true");
  86.          ((Hashtable)var3).put("line.separator.applet", "true");
  87.          String var4 = System.getProperty("java.version", "");
  88.          if (var4.indexOf("1.1") != -1) {
  89.             ((Hashtable)var3).put("java.protocol.handler.pkgs", "sun.plugin.protocol");
  90.          } else if (var4.indexOf("1.2beta3") != -1) {
  91.             ((Hashtable)var3).put("java.protocol.handler.pkgs", "sun.plugin.protocol.jdk12beta3");
  92.          } else {
  93.             ((Hashtable)var3).put("java.protocol.handler.pkgs", "sun.plugin.protocol.jdk12");
  94.          }
  95.  
  96.          try {
  97.             FileInputStream var5 = new FileInputStream(theUserPropertiesFile);
  98.             var3.load(new BufferedInputStream(var5));
  99.             var5.close();
  100.          } catch (Exception var9) {
  101.          }
  102.  
  103.          if ("true".equalsIgnoreCase(var3.getProperty("javaplugin.console", "false"))) {
  104.             Frame var10 = JavaRunTime.openJavaConsole();
  105.             if (var10 != null) {
  106.                ((Window)var10).show();
  107.             }
  108.  
  109.             System.out.print(getMessage("product_name"));
  110.             String var6 = System.getProperty("javaplugin.version");
  111.             if (var6 != null) {
  112.                System.out.print(": " + getMessage("version") + " " + var6);
  113.             }
  114.  
  115.             System.out.println("");
  116.             System.out.println(getMessage("using_jre_version") + " " + System.getProperty("java.version"));
  117.             System.out.println(getMessage("user_home_dir") + " = " + System.getProperty("user.home"));
  118.          }
  119.  
  120.          if ("false".equalsIgnoreCase(var3.getProperty("javaplugin.proxy.usebrowsersettings", "true"))) {
  121.             System.out.println(getMessage("user_overriden_browser"));
  122.             var0 = 1;
  123.             var1 = var3.getProperty("javaplugin.proxy.settings", "");
  124.             var2 = "";
  125.          }
  126.  
  127.          System.out.print(getMessage("proxy_configuration"));
  128.          switch (var0) {
  129.             case 1:
  130.                System.out.println(getMessage("manual_config"));
  131.                System.out.println("     " + getMessage("proxy_is") + var1);
  132.                System.out.println("     " + getMessage("proxy_override_is") + var2);
  133.                break;
  134.             case 2:
  135.                System.out.println(getMessage("auto_config"));
  136.                break;
  137.             default:
  138.                System.out.println(getMessage("no_proxy"));
  139.                var0 = 0;
  140.          }
  141.  
  142.          System.out.println("");
  143.          ((Hashtable)var3).remove("proxyHost");
  144.          ((Hashtable)var3).remove("proxyPort");
  145.          ((Hashtable)var3).remove("http.proxyHost");
  146.          ((Hashtable)var3).remove("http.proxyPort");
  147.          ((Hashtable)var3).remove("ftpProxyHost");
  148.          ((Hashtable)var3).remove("ftpProxyPort");
  149.          ((Hashtable)var3).remove("ftpProxySet");
  150.          ((Hashtable)var3).remove("gopherProxyHost");
  151.          ((Hashtable)var3).remove("gopherProxyPort");
  152.          ((Hashtable)var3).remove("gopherProxySet");
  153.          if (var0 != 0) {
  154.             ActivatorProxyHandler var11 = new ActivatorProxyHandler(var0, var1, var2);
  155.             String var14 = System.getProperty("java.version", "");
  156.             if (var14.indexOf("1.1") != -1) {
  157.                Handler.setProxyHandler(var11);
  158.                sun.plugin.protocol.ftp.Handler.setProxyHandler(var11);
  159.                sun.plugin.protocol.gopher.Handler.setProxyHandler(var11);
  160.             } else if (var14.indexOf("1.2beta3") != -1) {
  161.                Handler.setProxyHandler(var11);
  162.                sun.plugin.protocol.jdk12beta3.ftp.Handler.setProxyHandler(var11);
  163.                sun.plugin.protocol.gopher.Handler.setProxyHandler(var11);
  164.             } else {
  165.                Handler.setProxyHandler(var11);
  166.                sun.plugin.protocol.gopher.Handler.setProxyHandler(var11);
  167.                sun.plugin.protocol.jdk12.ftp.Handler.setProxyHandler(var11);
  168.             }
  169.  
  170.             try {
  171.                RMISocketFactory.setSocketFactory(new RMIPluginSocketFactory());
  172.             } catch (IOException var8) {
  173.             }
  174.          }
  175.  
  176.          if ("true".equalsIgnoreCase(var3.getProperty("javaplugin.proxy.authentication", "true"))) {
  177.             PluginAuthenticator var12 = new PluginAuthenticator();
  178.             HttpURLConnection.setDefaultAuthenticator(var12);
  179.          }
  180.  
  181.          System.setProperties(var3);
  182.          Runtime.getRuntime();
  183.          Runtime.runFinalizersOnExit(true);
  184.  
  185.          try {
  186.             MimeTable.getDefaultTable();
  187.          } catch (Throwable var7) {
  188.             var7.printStackTrace();
  189.          }
  190.  
  191.          ActivatorSecurityManager var13 = new ActivatorSecurityManager();
  192.          System.setSecurityManager(var13);
  193.          if ("false".equalsIgnoreCase(var3.getProperty("javaplugin.enabled", "true"))) {
  194.             javaEnabled = false;
  195.             System.err.println(getMessage("java_not_enabled"));
  196.          }
  197.       }
  198.    }
  199.  
  200.    protected AppletViewer(ActivatorAppletContext var1) {
  201.       if (var1 == null) {
  202.          throw new IllegalArgumentException("AppletContext");
  203.       } else {
  204.          this.appletContext = var1;
  205.          var1.addAppletInContext(this);
  206.       }
  207.    }
  208.  
  209.    public void init() {
  210.       ClassLoaderInfo var1 = ClassLoaderInfo.find(this);
  211.       var1.addReference();
  212.       super.init();
  213.       ((AppletPanel)this).sendEvent(1);
  214.       ((AppletPanel)this).sendEvent(2);
  215.       ((AppletPanel)this).sendEvent(3);
  216.    }
  217.  
  218.    public void onClose(int var1) {
  219.       this.appletContext.removeAppletFromContext(this);
  220.       if (super.status == 1) {
  221.          super.status = 7;
  222.          ((AppletPanel)this).stopLoading();
  223.          ((AppletPanel)this).getAppletHandlerThread().interrupt();
  224.       } else {
  225.          ((AppletPanel)this).sendEvent(4);
  226.          ((AppletPanel)this).sendEvent(5);
  227.          ((AppletPanel)this).sendEvent(0);
  228.          ((AppletPanel)this).sendEvent(6);
  229.  
  230.          try {
  231.             if (var1 >= 0) {
  232.                ((AppletPanel)this).getAppletHandlerThread().join((long)var1);
  233.             }
  234.          } catch (InterruptedException var3) {
  235.          }
  236.  
  237.          ClassLoaderInfo var2 = ClassLoaderInfo.find(this);
  238.          var2.removeReference();
  239.       }
  240.    }
  241.  
  242.    protected void initProperties() {
  243.       String var1 = this.getParameter("java_codebase");
  244.       if (var1 == null) {
  245.          var1 = this.getParameter("codebase");
  246.       }
  247.  
  248.       if (var1 != null) {
  249.          if (!var1.endsWith("/")) {
  250.             var1 = var1 + "/";
  251.          }
  252.  
  253.          try {
  254.             this.baseURL = new URL(this.documentURL, var1);
  255.          } catch (MalformedURLException var5) {
  256.          }
  257.       }
  258.  
  259.       if (this.baseURL == null) {
  260.          String var2 = this.documentURL.getFile();
  261.          int var3 = var2.lastIndexOf(47);
  262.          if (var3 > 0 && var3 < var2.length() - 1) {
  263.             try {
  264.                this.baseURL = new URL(this.documentURL, var2.substring(0, var3 + 1));
  265.             } catch (MalformedURLException var4) {
  266.             }
  267.          }
  268.       }
  269.  
  270.       if (this.baseURL == null) {
  271.          this.baseURL = this.documentURL;
  272.       }
  273.  
  274.    }
  275.  
  276.    public String getParameter(String var1) {
  277.       var1 = var1.toLowerCase();
  278.       if (this.atts.get(var1) != null) {
  279.          return (String)this.atts.get(var1);
  280.       } else {
  281.          String var2 = null;
  282.  
  283.          try {
  284.             var2 = this.getParameterFromHTML(var1);
  285.          } catch (Throwable var4) {
  286.             var4.printStackTrace();
  287.          }
  288.  
  289.          if (var2 != null) {
  290.             this.atts.put(var1.toLowerCase(), var2);
  291.          }
  292.  
  293.          return var2;
  294.       }
  295.    }
  296.  
  297.    protected abstract String getParameterFromHTML(String var1);
  298.  
  299.    public void setParameter(String var1, Object var2) {
  300.       var1 = var1.toLowerCase();
  301.       this.atts.put(var1, var2.toString());
  302.    }
  303.  
  304.    public URL getDocumentBase() {
  305.       return this.documentURL;
  306.    }
  307.  
  308.    public void setDocumentBase(URL var1) {
  309.       this.documentURL = var1;
  310.    }
  311.  
  312.    public URL getCodeBase() {
  313.       return this.baseURL;
  314.    }
  315.  
  316.    public int getWidth() {
  317.       String var1 = this.getParameter("width");
  318.       return var1 != null ? Integer.valueOf(var1) : 0;
  319.    }
  320.  
  321.    public int getHeight() {
  322.       String var1 = this.getParameter("height");
  323.       return var1 != null ? Integer.valueOf(var1) : 0;
  324.    }
  325.  
  326.    public String getCode() {
  327.       String var1 = this.getParameter("java_code");
  328.       if (var1 == null) {
  329.          var1 = this.getParameter("code");
  330.       }
  331.  
  332.       return var1;
  333.    }
  334.  
  335.    public String getJarFiles() {
  336.       return this.cookedJars;
  337.    }
  338.  
  339.    protected void loadJarFiles(AppletClassLoader var1) throws IOException, InterruptedException {
  340.       String var2 = this.getParameter("java_archive");
  341.       if (var2 == null) {
  342.          var2 = this.getParameter("archive");
  343.       }
  344.  
  345.       if (var2 != null) {
  346.          ClassLoaderInfo var3 = ClassLoaderInfo.find(this);
  347.  
  348.          try {
  349.             var3.lock();
  350.             String var6 = "";
  351.             StringTokenizer var7 = new StringTokenizer(var2, ",", false);
  352.  
  353.             while(var7.hasMoreTokens()) {
  354.                String var8 = var7.nextToken().trim();
  355.                if (!var3.hasJar(var8)) {
  356.                   var3.addJar(var8);
  357.                   if (var6.equals("")) {
  358.                      var6 = var8;
  359.                   } else {
  360.                      var6 = var6 + "," + var8;
  361.                   }
  362.                }
  363.             }
  364.  
  365.             this.cookedJars = var6;
  366.             super.loadJarFiles(var1);
  367.          } finally {
  368.             var3.unlock();
  369.          }
  370.  
  371.       }
  372.    }
  373.  
  374.    public String getSerializedObject() {
  375.       String var1 = this.getParameter("java_object");
  376.       if (var1 == null) {
  377.          var1 = this.getParameter("object");
  378.       }
  379.  
  380.       return var1;
  381.    }
  382.  
  383.    public Applet getApplet() {
  384.       Applet var1 = super.getApplet();
  385.       if (var1 != null) {
  386.          return var1 instanceof BeansApplet ? null : var1;
  387.       } else {
  388.          return null;
  389.       }
  390.    }
  391.  
  392.    public Object getViewedObject() {
  393.       Applet var1 = super.getApplet();
  394.       return var1 instanceof BeansApplet ? ((BeansApplet)var1).bean : var1;
  395.    }
  396.  
  397.    public AppletContext getAppletContext() {
  398.       return this.appletContext;
  399.    }
  400.  
  401.    public void paint(Graphics var1) {
  402.       if (this.getViewedObject() == null && var1 != null) {
  403.          ((Component)this).setBackground(Color.white);
  404.          var1.setColor(Color.black);
  405.          Dimension var2 = ((Component)this).getSize();
  406.          Font var3 = var1.getFont();
  407.          FontMetrics var4 = null;
  408.          if (var3 != null) {
  409.             var4 = var1.getFontMetrics(var3);
  410.          }
  411.  
  412.          String var5 = this.getWaitingMessage();
  413.          if (var2 != null && var4 != null) {
  414.             var1.drawString(var5, (var2.width - var4.stringWidth(var5)) / 2, (var2.height + var4.getAscent()) / 2);
  415.          }
  416.       }
  417.  
  418.    }
  419.  
  420.    public String getWaitingMessage() {
  421.       return getMessage("loading") + this.getHandledType() + " ...";
  422.    }
  423.  
  424.    public String getName() {
  425.       String var1 = this.getParameter("name");
  426.       if (var1 != null) {
  427.          return var1;
  428.       } else {
  429.          var1 = this.getCode();
  430.          if (var1 != null) {
  431.             int var2 = var1.lastIndexOf(".class");
  432.             if (var2 != -1) {
  433.                var1 = var1.substring(0, var2);
  434.             }
  435.          } else {
  436.             var1 = this.getSerializedObject();
  437.             if (var1 != null) {
  438.                int var4 = var1.lastIndexOf(".ser");
  439.                if (var4 != -1) {
  440.                   var1 = var1.substring(0, var4);
  441.                }
  442.             }
  443.          }
  444.  
  445.          return var1;
  446.       }
  447.    }
  448.  
  449.    protected String getHandledType() {
  450.       return getMessage("java_applet");
  451.    }
  452.  
  453.    public void setStatus(int var1) {
  454.       super.status = var1;
  455.    }
  456.  
  457.    public void showActivatorAppletStatus(String var1) {
  458.       ((AppletPanel)this).showAppletStatus(var1);
  459.    }
  460.  
  461.    public void showActivatorAppletLog(String var1) {
  462.       ((AppletPanel)this).showAppletLog(var1);
  463.    }
  464.  
  465.    public void setDoInit(boolean var1) {
  466.       super.doInit = var1;
  467.    }
  468.  
  469.    static void debug(String var0) {
  470.       if (debug) {
  471.          System.err.println("AppletViewerPanel: " + var0);
  472.       }
  473.  
  474.    }
  475.  
  476.    public static String getMessage(String var0) {
  477.       try {
  478.          return field_0.getString(var0);
  479.       } catch (MissingResourceException var1) {
  480.          return var0;
  481.       }
  482.    }
  483. }
  484.